IpTables - Desviar uma porta de um determinado ip/pc para passar por fora do servidor [roteamento] [

1. IpTables - Desviar uma porta de um determinado ip/pc para passar por fora do servidor [roteamento] [

Charles Reitz
charles.reitz

(usa Debian)

Enviado em 19/06/2011 - 11:46h

Bom Dia Pessoal,

Gostaria da ajuda da comunidade para resolver uma questão aparentemente simples porém não estou conseguindo resolver, tenho um Servidor c/ squid, firewall e MSN-Proxy, tenho o proprietário quer que seu Ip não passe por dentro do MSN-Proxy, porém tentei de várias formas fazer com que o seu IP conectasse por fora do servidor porém não dá. ROUTER, NAT,

Abaixo o scrip do firewall.
O script busca uns arquivos fora.

#!/bin/bash
#
# Titulo : Script de firewall com duas interface de redes (LAN e WAN)
# Versão : 1.0
#
# Criado (09/04/2008)
# Ultima atualização (09/04/2008)
#

### Ajuda do script de firewall
if [ "$1" == "--help" -o "$1" == "-h" ]
then
echo "Uso: $0 [OPÇÃO]"
echo
echo "start carrega todas as regras do script de firewall"
echo "stop limpa todas as regras do script de firewall"
echo
exit
fi
###

### Variaveis do script de firewall
IPTABLES="/sbin/iptables"
LOCAL="/etc/fw"

## Configuração LAN
ETH_LAN="eth1"
IP_LAN="192.168.1.1"
NET_LAN="192.168.1.0/24"

## Configuração WAN
ETH_WAN="eth0"
IP_WAN="10.1.1.2"
NET_WAN="10.1.1.0/8"

###

### Iniciando regras de firewall
case "$1" in
start)
echo "Carregando regras do script de firewall..."

## Carregando modulos necessarios para o script de firewall

modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_tables
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tcpmss
modprobe ipt_tos
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat

## Carregando configurações no kernel do linux

echo "1" > /proc/sys/net/ipv4/ip_forward 2>/dev/null

echo "0" > /proc/sys/net/ipv4/tcp_window_scaling

echo "0" > /proc/sys/net/ipv4/tcp_ecn

## Limpando todas as regras

$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X

## Carregando as politicas padrões

$IPTABLES -t filter -P INPUT DrOP
$IPTABLES -t filter -P FORWARD DrOP
$IPTABLES -t filter -P OUTPUT ACCEPT

## Carregando as regras personalizadas

### FILTER

## REGRAS DE FILTER - INPUT

# Libera a interface de loopback
$IPTABLES -t filter -A INPUT -i lo -j ACCEPT

# Deixa passar qualquer conexao ja estabelecida
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Icmp (Protecao contra Death Ping)
$IPTABLES -A INPUT -p icmp -m limit --limit 1/s -j ACCEPT

# Syn (Protecao contra Syn Flood)
$IPTABLES -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

# Libera acesso a entrada personalizado
for CFG_RULES in `cat $LOCAL/regras/entrada.personalizado.conf | egrep -v '^#'`; do
SOURCE=`echo $CFG_RULES | cut -d: -f1`
DEST=`echo $CFG_RULES | cut -d: -f2`
PROTO=`echo $CFG_RULES | cut -d: -f3`
PORT=`echo $CFG_RULES | cut -d: -f4`
$IPTABLES -A INPUT -p $PROTO -m state --state NEW -s $SOURCE -d $DEST --dport $PORT -j ACCEPT
done

# Log de qualquer outro tipo de conexao bloqueada
# $IPTABLES -A INPUT -j LOG --log-prefix "FW-Bloqueio-Input: " >> /var/log/fw.log 2>> /var/log/fw.log

# Bloqueia o que nao se enquadrar nas regras
$IPTABLES -A INPUT -j DROP

## REGRAS DE FILTER - FORWARD

# Libera a interface de loopback
$IPTABLES -t filter -A FORWARD -i lo -j ACCEPT

# Icmp (Protecao contra Death Ping)
$IPTABLES -A FORWARD -p icmp -m limit --limit 1/s -j ACCEPT

# Libera passar qualquer conexao ja estabelecida
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#Libera para o ip do site do BMC
# $IPTABLES -A FORWARD -p tcp -m state --state NEW -s 192.168.1.105 -d 200.143.23.15 -o $ETH_WAN -j ACCEPT
# $IPTABLES -A FORWARD -p tcp -m state --state NEW -s 200.143.23.15 -d 192.168.1.105 -o $ETH_LAN -j ACCEPT

# Libera o roteamento para conexão a WAN, com regras personalizadas
for CFG_RULES in `cat $LOCAL/regras/roteamento.personalizado.conf | egrep -v '^#'`; do
SOURCE=`echo $CFG_RULES | cut -d: -f1`
DEST=`echo $CFG_RULES | cut -d: -f2`
PROTO=`echo $CFG_RULES | cut -d: -f3`
PORT=`echo $CFG_RULES | cut -d: -f4`
$IPTABLES -A FORWARD -p $PROTO -m state --state NEW -s $SOURCE -d $DEST --dport $PORT -o $ETH_WAN -j ACCEPT
done

# Log de qualquer outro tipo de conexao
# $IPTABLES -A FORWARD -j LOG --log-prefix "FW-Bloqueia-FORWARD: " >> /var/log/fw.log 2>> /var/log/fw.log

# Bloqueia o que nao se enquadrar nas regras
$IPTABLES -A FORWARD -j DROP

### NAT

## REGRAS DE NAT - PREROUTING
$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


# $IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 1863 -j REDIRECT --to-port 1863


## REGRAS DE NAT - POSTROUTING
#$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
# Encaminha os pacotes da LAN para WAN
# $IPTABLES -t nat -A POSTROUTING -s $NET_LAN -o $ETH_WAN -j SNAT --to $IP_WAN
# OBS.: PARA ADSL USE:
$IPTABLES -t nat -A POSTROUTING -s $NET_LAN -o $ETH_WAN -j MASQUERADE

# $IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.1.16 -p tcp -m multiport --dport 1863,443 -j SNAT --to-source 10.1.1.2


# $IPTABLES -t nat -A PREROUTING -s 200.234.200.153 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 1863 -j REDIRECT --to-port 1863
# $IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 1863 -j REDIRECT --to-port 1863



#IPTABLES -t nat -A PREROUTING -p tcp -d 10.1.1.2 --dport 1863 -j DNAT --to 192.168.1.16
#IPTABLES -t nat -A POSTROUTING -p tcp -s 192.168.1.16 --sport 1863 -j SNAT --to 10.1.1.2

#$IPTABLES -A FORWARD -s 10.1.1.2 -d 192.168.1.16 -p tcp --dport 1863
#$IPTABLES -A FORWARD -s 192.168.1.16 -d 10.1.1.16 -p tcp --dport 1863

#$IPTABLES -t FORWARD -j LOG

#$IPTABLES -t nat -A PREROUTING -d 192.168.1.16 -p tcp -m tcp --dport 1863 -j DNAT --to-destination 10.1.1.2:1863

## REGRAS de NAT - OUTPUT

### MANGLE

## REGRAS DE MANGLE - PREROUTING

## REGRAS DE MANGLE - INPUT

## REGRAS DE MANGLE - FORWARD

## REGRAS DE MANGLE - OUTPUT

## REGRAS DE MANGLE - POSTROUTING

echo "Regras do script de firewall carregadas!"
;;

### Parando o script de firewall
stop)
echo "Limpando as regras do script de firewall..."

## Carregando as politicas padrões
$IPTABLES -t filter -P INPUT ACCEPT
$IPTABLES -t filter -P FORWARD ACCEPT
$IPTABLES -t filter -P OUTPUT ACCEPT

## Limpando cadeias
$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X

#$IPTABLES -t nat -A POSTROUTING -s $NET_LAN -o $ETH_WAN -j MASQUERADE

echo "Regras do script de firewall estão limpas"
;;
*)
echo "Erro! $0 --help"
;;
esac
exit 0

###### FIM ######


Como vocês podem observar tentei várias maneiras no NAT porém sem sucesso.

Ficarei no aguardo, obrigado pela ajuda, comunidade!


  


2. Re: IpTables - Desviar uma porta de um determinado ip/pc para passar por fora do servidor [roteamento] [

Roberto Soares (3spreto)
roberto_espreto

(usa Slackware)

Enviado em 19/06/2011 - 16:44h

Tente inserir estas regras.

iptables -I FORWARD -s IP_PARA_LIBERAR -p tcp --dport 1863 -j ACCEPT
iptables -I FORWARD -s IP_PARA_LIBERAR -d loginnet.password.com -j ACCEPT

Coloque-as antes de bloquear para o restante da rede!
Veja se funciona. Vamos fazer funcionar isso ae! :)

Att,


3. Re: IpTables - Desviar uma porta de um determinado ip/pc para passar por fora do servidor [roteamento] [

Roberto Soares (3spreto)
roberto_espreto

(usa Slackware)

Enviado em 19/06/2011 - 17:16h

Outra coisa.

No início das regras onde você especifica as políticas padrão, você colocou a letra "r" em minúsculo -> (DrOP). Irá ocasionar erro.

Tente também usar a regra abaixo antes da linha do redirecionamento e inclua a seguinte linha:

# iptables -t nat -I PREROUTING -s XXX.XXX.XXX.XXX -p tcp –dport 80 -j ACCEPT

Onde XXX.XXX.XXX.XXX é o IP do diretor.

Att,



4. Obrigado

Charles Reitz
charles.reitz

(usa Debian)

Enviado em 19/06/2011 - 17:51h

Obrigado Roberto, vou testar depois posto o resultado se funcionou.

Abraços,



5. Obrigado

Charles Reitz
charles.reitz

(usa Debian)

Enviado em 27/06/2011 - 22:06h

Fala Roberto,

Perfeito, funciono perfeitamente, so não entendi muito bem a diferença entre usar o -I e o -A, tem diferençã aonde eu coloco a regra no Script?

Você falo para colocar antes do Nat, pq?

Obrigado, e aguardo vossa explicação sobre os parâmetros e regras






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts